﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics.Contracts;

namespace Numero3DBObject
{
    [Serializable()]
    public class Etudiant
    {
        private string matricule;
        private string nom;
        private string prenom;
        private string adresse;
        private string ville;
        private string code;
        private string tel;
        private int departement;

        public Etudiant() { }

        public Etudiant(string _matricule, string _nom, string _prenom, string _adresse, string _ville, string _code, string _tel,int _departement) 
        {
            matricule = _matricule;
            nom = _nom;
            prenom = _prenom;
            adresse = _adresse;
            ville = _ville;
            code = _code;
            tel = _tel;
            departement = _departement;
        }


        public string Matricule
        {
            get { return matricule; }
            set { matricule = value; }
        }

        public string Nom
        {
            get { return nom; }
            set { nom = value; }
        }

        public string Prenom
        {
            get { return prenom; }
            set { prenom = value; }
        }

        public string Adresse
        {
            get { return adresse; }
            set { adresse = value; }
        }

        public string Ville
        {
            get { return ville; }
            set { ville = value; }
        }

        public string Code
        {
            get { return code; }
            set { code = value; }
        }

        public string Tel
        {
            get { return tel; }
            set { tel = value; }
        }

        public int Departement
        {
            get { return departement; }
            set { departement = value; }
        }

        public static bool operator ==(Etudiant e1, Etudiant e2)
        {
            try
            {
                bool identique = false;
                if (e1.Matricule.Equals(e2.Matricule)
                    && e1.nom.Equals(e2.nom)
                    && e1.prenom.Equals(e2.prenom)
                    && e1.adresse.Equals(e2.adresse)
                    && e1.ville.Equals(e2.code)
                    && e1.tel.Equals(e2.tel)
                    && e1.departement.Equals(e2.departement))
                {
                    identique = true;
                }

                return identique;
            }
            catch (NullReferenceException e)
            {
                
                throw e;
            }

        }


        public static bool operator !=(Etudiant e1, Etudiant e2)
        {
            try
            {
                bool different = false;
                if (!(e1.Matricule.Equals(e2.Matricule)
                    && e1.nom.Equals(e2.nom)
                    && e1.prenom.Equals(e2.prenom)
                    && e1.adresse.Equals(e2.adresse)
                    && e1.ville.Equals(e2.ville)
                    && e1.code.Equals(e2.code)
                    && e1.tel.Equals(e2.tel)
                    && e1.departement.Equals(e2.departement)))
                {
                    different = true;
                }

                return different;
            }
            catch (NullReferenceException e)
            {
                
                throw e;
            }

        }

        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }

        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
    }
}
